package com.hongxin.nw.netty.mq_info;

import com.alibaba.fastjson.JSONObject;
import com.hongxin.nw.netty.model.Transfer;
import com.hongxin.nw.netty.model.analysis.info.DTmmenb1;
import com.hongxin.nw.netty.mq_info.domain.CMD302;
import com.hongxin.nw.netty.utils.JSONUtils;
import com.hongxin.nw.netty.utils.ModifyJsonKeyUtil;
import com.hongxin.nw.netty.values.Catalogue;
import com.hongxin.nw.netty.values.TypeIdentif;

import java.util.List;

import static com.hongxin.nw.netty.values.StaticValue.VAL_32;

/**
 * @remark 充电信息302+104
 * @author: GuoXiaolin
 * @date 2019/6/21 19:26
 * @Version 1.0
 * @Descibe
 */
public class ChargeInfos implements IMq {

    @SuppressWarnings("unchecked")
    @Override
    public JSONObject sendMqInfo(Transfer transfer) throws Exception {

        //json字段
        String jsonSoc = "SOC";//业务系统需要的字段
        String jsonRemoveSoc= "sOC";//业务系统不需要的字段

        String code = transfer.getCode();
        List<DTmmenb1> myl = (List<DTmmenb1>) transfer.getObj();
        CMD302 cmd302 = new CMD302();
        cmd302.setMachineId(code);//设备编号
        cmd302.setEquipType(TypeIdentif.E_TYPE_DIRECT.getStr());//"2"
        cmd302.setInterfaceNumber(String.valueOf(myl.get(0).getGun()+1));//枪口编号
        for (DTmmenb1 dataItem : myl) {
            if (dataItem.getInfoAdr_i() == TypeIdentif.INFO_MACHINE_11_0.getInt()) {
                cmd302.setOutputVoltageOfChargePile(dataItem.getValue());//充电输出电压
            }
            if (dataItem.getInfoAdr_i() == TypeIdentif.INFO_MACHINE_11_1.getInt()) {
                cmd302.setOutputCurrentOfChargePile(dataItem.getValue());//充电输出电流
            }
            if (dataItem.getInfoAdr_i() == TypeIdentif.INFO_MACHINE_11_2.getInt()) {}
            if (dataItem.getInfoAdr_i() == TypeIdentif.INFO_MACHINE_11_3.getInt()) {
                cmd302.setSOC(dataItem.getValue());//SOC
            }
            if (dataItem.getInfoAdr_i() == TypeIdentif.INFO_MACHINE_11_4.getInt()) {
                cmd302.setMinTempOfBatteryPack(dataItem.getValue());//电池组最低温度
            }
            if (dataItem.getInfoAdr_i() == TypeIdentif.INFO_MACHINE_11_5.getInt()) {
                cmd302.setMaxTempOfBatteryPack(dataItem.getValue());//电池组最高温度
            }
            if (dataItem.getInfoAdr_i() == TypeIdentif.INFO_MACHINE_11_6.getInt()) {
                cmd302.setWorkingState(dataItem.getValue());
            }
            if (dataItem.getInfoAdr_i() == TypeIdentif.INFO_MACHINE_11_7.getInt()) {
                cmd302.setMinVoltageOfSingleBattery(dataItem.getValue());//单体电池最低电压
            }
            if (dataItem.getInfoAdr_i() == TypeIdentif.INFO_MACHINE_11_8.getInt()) {
                cmd302.setMaxVoltageOfSingleBattery(dataItem.getValue());// 单体电池最高电压
            }
            if (dataItem.getInfoAdr_i() == TypeIdentif.INFO_MACHINE_11_9.getInt()) {
                cmd302.setVoltageACA(dataItem.getValue());// （当前）A相电压
                cmd302.setOutputVoltageOfChargePile(dataItem.getValue());
            }
            if (dataItem.getInfoAdr_i() == TypeIdentif.INFO_MACHINE_11_10.getInt()) {
                cmd302.setVoltageACB(dataItem.getValue());// （当前）B相电压
            }
            if (dataItem.getInfoAdr_i() == TypeIdentif.INFO_MACHINE_11_11.getInt()) {
                cmd302.setVoltageACC(dataItem.getValue());// （当前）C相电压
            }
            if (dataItem.getInfoAdr_i() == TypeIdentif.INFO_MACHINE_11_12.getInt()) {
                cmd302.setCurrentACA(dataItem.getValue());// （当前）A相电流
                cmd302.setOutputCurrentOfChargePile(dataItem.getValue());
            }
            if (dataItem.getInfoAdr_i() == TypeIdentif.INFO_MACHINE_11_13.getInt()) {
                cmd302.setCurrentACB(dataItem.getValue());// （当前）B相电流
            }
            if (dataItem.getInfoAdr_i() == TypeIdentif.INFO_MACHINE_11_14.getInt()) {
                cmd302.setCurrentACC(dataItem.getValue());// （当前）C相电流
            }
        }

        JSONObject json = (JSONObject) JSONObject.toJSON(cmd302);
        json.put(jsonSoc, cmd302.getSOC());
        json.put(Catalogue.HXCMD, Catalogue.CMD302);
        JSONObject mqJson = ModifyJsonKeyUtil.removeEmptyKey(json);
        mqJson.remove(jsonRemoveSoc);

        return JSONUtils.getRoot(0, VAL_32, mqJson);
    }
}
